package com.hbird.controller.system;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * swagger 测试 controller
 * http://localhost:8080/swagger-ui.html
 *
 项目地址：
 https://github.com/battcn/swagger-spring-boot

 使用
 1.X 版本需要在启动类添加 @EnableSwagger2Doc 但是 2.X 版本后无需添加，请知晓...

 在pom.xml中引入依赖：
 <dependency>
 <groupId>com.battcn</groupId>
 <artifactId>swagger-spring-boot-starter</artifactId>
 <version>2.0.6-RELEASE</version>
 </dependency>

 在application.yml中添加
 spring:
   swagger:
     enable: true
 在application.properties中添加
 spring.swagger.enable=true

 配置说明
 spring.swagger.enabled：提供该配置目的是方便多环境关闭，一般生产环境中不会暴露它，
 这时候就可以通过 java -jar xx.jar --spring.swagger.enabled=false 动态关闭，
 也可以在多环境配置写好

 properties
 spring.swagger.enabled=是否启用swagger，默认：true
 spring.swagger.title=标题
 spring.swagger.description=描述信息
 spring.swagger.version=版本
 spring.swagger.license=许可证
 spring.swagger.licenseUrl=许可证URL
 spring.swagger.termsOfServiceUrl=服务条款URL
 spring.swagger.contact.name=维护人
 spring.swagger.contact.url=维护人URL
 spring.swagger.contact.email=维护人email

 spring.swagger.base-package=swagger扫描的基础包，默认：全扫描
 spring.swagger.base-path=需要处理的基础URL规则，默认：/**
 spring.swagger.exclude-path=需要排除的URL规则，默认：空
 spring.swagger.host=文档的host信息，默认：空
 spring.swagger.globalOperationParameters[0].name=参数名
 spring.swagger.globalOperationParameters[0].description=描述信息
 spring.swagger.globalOperationParameters[0].modelRef=指定参数类型
 spring.swagger.globalOperationParameters[0].parameterType=指定参数存放位置,参考ParamType:(header,query,path,body,form)
 spring.swagger.globalOperationParameters[0].required=指定参数是否必传，默认false
 #下面分组是
 spring.swagger.groups.<name>.basePackage=swagger扫描的路径
 #比如
 spring.swagger.groups.基础信息.basePackage=com.battcn.controller.basic

 # 关闭 JSR
 spring.swagger.validator-plugin=false
 # 全局消息体
 spring.swagger.global-response-messages.GET[0].code=400
 spring.swagger.global-response-messages.GET[0].message=server response 400
 spring.swagger.global-response-messages.POST[0].code=400
 spring.swagger.global-response-messages.POST[0].message=server response 400
 spring.swagger.global-response-messages.POST[1].code=404
 spring.swagger.global-response-messages.POST[1].message=server response 404

 # 2.0.3 版本新特性（开启后访问 swagger-ui.html 会自动路由到登陆页面，保障接口信息不被暴露）
 spring.swagger.security.filter-plugin=true
 # 配置账号密码
 spring.swagger.security.username=battcn
 spring.swagger.security.password=battcn


 常用注解说明：
 @Api:一般用于Controller中,用于接口分组。如：@Api(value = "用户接口", description = "用户接口", tags = {"1.1.0"})
 @ApiOperation:接口说明,用于api方法上。如： @ApiOperation(value = "用户查询", notes = "根据ID查询用户信息")
 @ApiImplicitParam:参数说明,适用于只有一个请求参数,主要参数
 @ApiImplicitParams:多个参数说明,主要参数参考上面@ApiImplicitParam
 @ApiModel:实体类说明
 @ApiModelProperty：实体参数说明
 */
@Api(value = "用户接口", description = "用户接口", tags = {"1.1.0"})
public class SwaggerController {
    /**
     * 输出字符串测试
     * http://localhost:8080/helloboot
     * @return
     */
    @ApiOperation(value = "用户查询", notes = "根据ID查询用户信息")
    @RequestMapping("/hellotest")
    public String helloTest(){
        return "Hello！";
    }

    /**
     * htmltest
     * @return
     */
    @RequestMapping("/htmltest")
    public String test(){
        return "login";
    }
}